package br.com.dev.tcc.view.sinistro.chain;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import br.com.dev.tcc.R;
import br.com.dev.tcc.bean.sinistro.ParteAvariadasEnum;
import br.com.dev.tcc.singleton.SinistroSingleton;

public class SinistroPassoPartesAvariadas extends SinistroChainItem {

	private View containerFrente;
	private View txtFrente;
	private boolean frenteVisivel;
	private CheckBox frenteCapo;
	private CheckBox frenteParachoque;
	private CheckBox frenteFarolNeblinaEsquerdo;
	private CheckBox frenteFarolNeblinaDireito;
	private CheckBox frenteParabrisa;
	private CheckBox frenteFarolMilhaDireito;
	private CheckBox frenteFarolMilhaEsquerdo;
	private CheckBox frentePiscaDireito;
	private CheckBox frentePiscaEsquerdo;

	private View containerTraseira;
	private View txtTraseira;
	private boolean traseiraVisivel;
	private CheckBox trasParachoque;
	private CheckBox trasVidro;
	private CheckBox trasOlhoGatoEsquerdo;
	private CheckBox trasOlhoGatoDireito;
	private CheckBox trasPiscaDireito;
	private CheckBox trasPiscaEsquerdo;
	private CheckBox trasBrakeLight;
	private CheckBox trasTampa;

	private View containerLaterais;
	private View txtLaterais;
	private boolean lateraisVisivel;
	private CheckBox latRetrovisorEsquerdo;
	private CheckBox latRetrovisorDireito;
	private CheckBox latVidroDianteiroEsquerdo;
	private CheckBox latVidroDianteiroDireito;
	private CheckBox latVidroTraseiroEsquerdo;
	private CheckBox latVidroTraseiroDireito;
	private CheckBox latParalamaEsquerdo;
	private CheckBox latParalamaDireito;
	private CheckBox latPortaDianteiraEsquerda;
	private CheckBox latPortaDianteiraDireita;
	private CheckBox latPortaTraseiraEsquerda;
	private CheckBox latPortaTraseiraDireita;
	private CheckBox latEsquerda;
	private CheckBox latDireita;
	private CheckBox latRodaDianteiraEsquerda;
	private CheckBox latRodaDianteiraDireita;
	private CheckBox latRodaTraseiraEsquerda;
	private CheckBox latRodaTraseiraDireita;
	private CheckBox latOculoDianteiroEsquerdo;
	private CheckBox latOculoDianteiroDireito;
	private CheckBox latOculoTraseiroEsquerdo;
	private CheckBox latOculoTraseiroDireito;

	private View containerTeto;
	private View txtTeto;
	private boolean tetoVisivel;
	private CheckBox teto;
	private CheckBox tetoSolar;

	public SinistroPassoPartesAvariadas(Context context) {
		super(context);
		inflateView(R.layout.sinistro_danos);
	}

	@Override
	public void init() {

		containerFrente = view.findViewById(R.id.containerFrente);
		txtFrente = view.findViewById(R.id.txtDanosFrente);
		containerTraseira = view.findViewById(R.id.containerTraseira);
		txtTraseira = view.findViewById(R.id.txtDanosTraseira);
		containerLaterais = view.findViewById(R.id.containerLaterais);
		txtLaterais = view.findViewById(R.id.txtDanosLaterais);
		containerTeto = view.findViewById(R.id.containerTeto);
		txtTeto = view.findViewById(R.id.txtDanosTeto);

		frenteCapo 					= (CheckBox) view.findViewById(R.id.checkFrenteCapo);   
		frenteParachoque 			= (CheckBox) view.findViewById(R.id.checkFrenteParachoque);
		frenteFarolNeblinaEsquerdo 	= (CheckBox) view.findViewById(R.id.checkFrenteNeblinaE);
		frenteFarolNeblinaDireito 	= (CheckBox) view.findViewById(R.id.checkFrenteNeblinaD);
		frenteParabrisa				= (CheckBox) view.findViewById(R.id.checkFrenteParabrisa);
		frenteFarolMilhaDireito 	= (CheckBox) view.findViewById(R.id.checkFrenteMilhaD);
		frenteFarolMilhaEsquerdo 	= (CheckBox) view.findViewById(R.id.checkFrenteMilhaE);
		frentePiscaDireito 			= (CheckBox) view.findViewById(R.id.checkFrentePiscaD);
		frentePiscaEsquerdo 		= (CheckBox) view.findViewById(R.id.checkFrentePiscaE);
		
		trasParachoque 			= (CheckBox) view.findViewById(R.id.checkTrasParachoque);
		trasVidro 				= (CheckBox) view.findViewById(R.id.checkTrasVidro);
		trasOlhoGatoEsquerdo 	= (CheckBox) view.findViewById(R.id.checkTrasOlhoGatoE);
		trasOlhoGatoDireito 	= (CheckBox) view.findViewById(R.id.checkTrasOlhoGatoD);
		trasPiscaDireito 		= (CheckBox) view.findViewById(R.id.checkTrasPiscaD);
		trasPiscaEsquerdo 		= (CheckBox) view.findViewById(R.id.checkTrasPiscaE);
		trasBrakeLight 			= (CheckBox) view.findViewById(R.id.checkTrasBrakeLight);
		trasTampa 				= (CheckBox) view.findViewById(R.id.checkTrasTampa);
		
		latRetrovisorEsquerdo 		= (CheckBox) view.findViewById(R.id.checkLateraisRetrovisorE);
		latRetrovisorDireito 		= (CheckBox) view.findViewById(R.id.checkLateraisRetrovisorD);
		latVidroDianteiroEsquerdo 	= (CheckBox) view.findViewById(R.id.checkLateraisVidroDianteiroE);
		latVidroDianteiroDireito 	= (CheckBox) view.findViewById(R.id.checkLateraisVidroDianteiroD);
		latVidroTraseiroEsquerdo 	= (CheckBox) view.findViewById(R.id.checkLateraisVidroTraseiroE);
		latVidroTraseiroDireito 	= (CheckBox) view.findViewById(R.id.checkLateraisVidroTraseiroD);
		latParalamaEsquerdo 		= (CheckBox) view.findViewById(R.id.checkLateraisParalamaE);
		latParalamaDireito 			= (CheckBox) view.findViewById(R.id.checkLateraisParalamaD);
		latPortaDianteiraEsquerda 	= (CheckBox) view.findViewById(R.id.checkLateraisPortaDianteiraE);
		latPortaDianteiraDireita	= (CheckBox) view.findViewById(R.id.checkLateraisPortaDianteiraD);
		latPortaTraseiraEsquerda 	= (CheckBox) view.findViewById(R.id.checkLateraisPortaTraseiraE);
		latPortaTraseiraDireita		= (CheckBox) view.findViewById(R.id.checkLateraisPortaTraseiraD);
		latRodaDianteiraEsquerda 	= (CheckBox) view.findViewById(R.id.checkLateraisRodaDiaE);
		latRodaDianteiraDireita 	= (CheckBox) view.findViewById(R.id.checkLateraisRodaDiaD);
		latRodaTraseiraEsquerda 	= (CheckBox) view.findViewById(R.id.checkLateraisRodaTrasE);
		latRodaTraseiraDireita 		= (CheckBox) view.findViewById(R.id.checkLateraisRodaTrasD);
		latEsquerda 				= (CheckBox) view.findViewById(R.id.checkLateralE);
		latDireita 					= (CheckBox) view.findViewById(R.id.checkLateralD);
		latOculoDianteiroEsquerdo	= (CheckBox) view.findViewById(R.id.checkOculoDiaE);
		latOculoDianteiroDireito	= (CheckBox) view.findViewById(R.id.checkOculoDiaD);
		latOculoTraseiroEsquerdo	= (CheckBox) view.findViewById(R.id.checkOculoTrasE);
		latOculoTraseiroDireito		= (CheckBox) view.findViewById(R.id.checkOculoTrasD);
		
		teto = (CheckBox) view.findViewById(R.id.checkTeto);
		tetoSolar = (CheckBox) view.findViewById(R.id.checkTetoSolar);
		
		setListeners();
	}

	private void setListeners() {

		txtFrente.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				frenteVisivel = !frenteVisivel;
				containerFrente.setVisibility(frenteVisivel ? View.VISIBLE : View.GONE);
			}
		});

		txtTraseira.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				traseiraVisivel = !traseiraVisivel;
				containerTraseira.setVisibility(traseiraVisivel ? View.VISIBLE : View.GONE);
			}
		});

		txtLaterais.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				lateraisVisivel = !lateraisVisivel;
				containerLaterais.setVisibility(lateraisVisivel ? View.VISIBLE : View.GONE);
			}
		});

		txtTeto.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				tetoVisivel = !tetoVisivel;
				containerTeto.setVisibility(tetoVisivel ? View.VISIBLE : View.GONE);
			}
		});
	}

	@Override
	public View getFirstView() {
		return view.findViewById(R.id.txtDanos);
	}

	@Override
	public boolean isValid() {
		return true;
	}

	@Override
	public void setSinistroFields() {
		
		List<ParteAvariadasEnum> partes = new ArrayList<ParteAvariadasEnum>();
		
		if(frenteCapo.isChecked()) partes.add(ParteAvariadasEnum.CAPUZ_MOTOR);
		if(frenteFarolMilhaDireito.isChecked() || frenteFarolMilhaEsquerdo.isChecked()) 
			partes.add(ParteAvariadasEnum.FAROL_DE_MILHA);
		if(frenteFarolNeblinaDireito.isChecked() || frenteFarolNeblinaEsquerdo.isChecked()) 
			partes.add(ParteAvariadasEnum.FAROL_NEBLINA);
		if(frenteParabrisa.isChecked()) partes.add(ParteAvariadasEnum.PARABRISA);
		if(frenteParachoque.isChecked()) partes.add(ParteAvariadasEnum.PARACHOQUE_DIANTEIRO);
		if(frentePiscaDireito.isChecked()) partes.add(ParteAvariadasEnum.PISCA_DIANTEIRO_DIREITO);
		if(frentePiscaEsquerdo.isChecked()) partes.add(ParteAvariadasEnum.PISCA_DIANTEIRO_ESQUERDO);
		
		if(trasBrakeLight.isChecked()) partes.add(ParteAvariadasEnum.BRAKE_LIGHT);
		if(trasOlhoGatoDireito.isChecked()) partes.add(ParteAvariadasEnum.OLHO_DE_GATO_REFLETIVO_DIREITO);
		if(trasOlhoGatoEsquerdo.isChecked()) partes.add(ParteAvariadasEnum.OLHO_DE_GATO_REFLETIVO_ESQUERDO);
		if(trasParachoque.isChecked()) partes.add(ParteAvariadasEnum.PARACHOQUE_TRASEIRO);
		if(trasPiscaDireito.isChecked()) partes.add(ParteAvariadasEnum.PISCA_TRASEIRO_DIREITO);
 		if(trasPiscaEsquerdo.isChecked()) partes.add(ParteAvariadasEnum.PISCA_TRASEIRO_ESQUERDO);
		if(trasTampa.isChecked()) partes.add(ParteAvariadasEnum.TAMPA_PORTA_MALAS);
		if(trasVidro.isChecked())  partes.add(ParteAvariadasEnum.VIGIA);
		
		if(latParalamaDireito.isChecked()) partes.add(ParteAvariadasEnum.PARALAMA_DIREITO);
		if(latParalamaEsquerdo.isChecked()) partes.add(ParteAvariadasEnum.PARALAMA_ESQUERDO);
		if(latPortaDianteiraDireita.isChecked()) partes.add(ParteAvariadasEnum.PORTA_DIANTEIRA_DIREITA);
		if(latPortaDianteiraEsquerda.isChecked()) partes.add(ParteAvariadasEnum.PORTA_DIANTEIRA_ESQUERDA);
		if(latPortaTraseiraDireita.isChecked()) partes.add(ParteAvariadasEnum.PORTA_TRASEIRA_DIREITA);
		if(latPortaTraseiraEsquerda.isChecked()) partes.add(ParteAvariadasEnum.PORTA_TRASEIRA_ESQUERDA);
		if(latRetrovisorDireito.isChecked()) partes.add(ParteAvariadasEnum.RETROVISOR_DIREITO);
		if(latRetrovisorEsquerdo.isChecked()) partes.add(ParteAvariadasEnum.RETROVISOR_ESQUERDO);
		if(latRodaDianteiraDireita.isChecked()) partes.add(ParteAvariadasEnum.RODA_DIANTEIRA_DIREITA);
		if(latRodaDianteiraEsquerda.isChecked()) partes.add(ParteAvariadasEnum.RODA_DIANTEIRA_ESQUERDA);
		if(latRodaTraseiraDireita.isChecked()) partes.add(ParteAvariadasEnum.RODA_TRASEIRA_DIREITA);
		if(latRodaTraseiraEsquerda.isChecked()) partes.add(ParteAvariadasEnum.RODA_TRASEIRA_ESQUERDA);
		if(latVidroDianteiroDireito.isChecked()) partes.add(ParteAvariadasEnum.VIDRO_LATERAL_DIANTEIRO_DIREITO);
		if(latVidroDianteiroEsquerdo.isChecked()) partes.add(ParteAvariadasEnum.VIDRO_LATERAL_DIANTEIRO_ESQUERDO);
		if(latVidroTraseiroDireito.isChecked()) partes.add(ParteAvariadasEnum.VIDRO_LATERAL_TRASEIRO_DIREITO);
		if(latVidroTraseiroEsquerdo.isChecked()) partes.add(ParteAvariadasEnum.VIDRO_LATERAL_TRASEIRO_ESQUERDO);
		if(latEsquerda.isChecked()) partes.add(ParteAvariadasEnum.LATERAL_ESQUERDA);
		if(latDireita.isChecked()) partes.add(ParteAvariadasEnum.LATERAL_DIREITA);
		if(latOculoDianteiroEsquerdo.isChecked()) partes.add(ParteAvariadasEnum.OCULO_DIANTEIRO_ESQUERDO);
		if(latOculoDianteiroDireito.isChecked()) partes.add(ParteAvariadasEnum.OCULO_DIANTEIRO_DIREITO);
		if(latOculoTraseiroEsquerdo.isChecked()) partes.add(ParteAvariadasEnum.OCULO_TRASEIRO_ESQUERDO);
		if(latOculoTraseiroDireito.isChecked()) partes.add(ParteAvariadasEnum.OCULO_TRASEIRO_DIREITO);
		
		if(teto.isChecked()) partes.add(ParteAvariadasEnum.TETO);
		if(tetoSolar.isChecked()) partes.add(ParteAvariadasEnum.TETO_SOLAR);
		
		SinistroSingleton.getInstance().setPartesAvariadas(partes);
	}

	@Override
	public void onShow() {
		view.findViewById(R.id.txtDanos).requestFocus();
	}
}
